﻿using System.Collections.Generic;
using Itdavany.Data;
using Itdavany.Objects;

namespace Itdavany.Data
{
    // Scene 을 늘어놓은것.
    public class FrameArray : Dictionary<string, Scene>
    {
        //List<Scene> framelist = new List<Scene>();      // Frame을 정순서로 늘어놓은것.


        Dictionary<string, Position> poslist = new Dictionary<string, Position>();
        // Position 인스턴스 리스트
        public Dictionary<string, Position> PositionList
        {
            get
            {
                return poslist;
            }
        }

        Dictionary<string, Area> arealist = new Dictionary<string, Area>();
        // Area 인스턴스 리스트
        public Dictionary<string, Area> AreaList
        {
            get
            {
                return arealist;
            }
        }

        Dictionary<string, Font> fontlist = new Dictionary<string, Font>();

        public Dictionary<string, Font> FontList
        {
            get
            {
                return fontlist;
            }
        }

        public bool IsShadowed
        {
            get
            {
                return shadowInfo.scale > 0.0f;
            }
        }

        ShadowInfo shadowInfo = ShadowInfo.None;

        public ShadowInfo Shadow
        {
            get
            {
                return shadowInfo;
            }

            set
            {
                shadowInfo = value;
            }
        }

        public GameObject FindObject(string name)
        {
            foreach (Scene scn in this.Values)
                foreach (GameObjectGroup grp in scn)
                {
                    if (grp.ContainsKey(name))
                        return grp[name];
                }

            return null;
        }

        public List<GameObject> FindObjects(string name)
        {
            List<GameObject> lst = new List<GameObject>();

            foreach(Scene scn in this.Values)
                foreach (GameObjectGroup grp in scn)
                {
                    if (grp.ContainsKey(name)) lst.Add(grp[name]);
                }

            return lst;
        }


        /*
        WidgetFormat widformat;
        // 하부 오브젝트에 걸린 parent WidgetFormat 임.
        // (FrameArray는 개념상 게임상에 나타나는 Object는 아니지만 하부 오므젝트들이 parent로 모두
        // 이것을 가리키게 하기 위해서.)
        public WidgetFormat DefaultFormat
        {
            get
            {
                return widformat;
            }

            set
            {
                widformat = value;
            }
        }*/
    }
}
